home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / pc / SNNSV32.ZIP / SNNSv3.2 / xgui / sources / d3_pannels.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-04-25  |  7.0 KB  |  239 lines

  1. /*****************************************************************************
  2.   FILE           : d3_pannels.c
  3.   SHORTNAME      : pannels.c
  4.   SNNS VERSION   : 3.2
  5.  
  6.   PURPOSE        : this module creates the control pannel
  7.   NOTES          :
  8.  
  9.   AUTHOR         : Ralf Huebner
  10.   DATE           : 1.12.1991
  11.  
  12.   CHANGED BY     :
  13.   IDENTIFICATION : @(#)d3_pannels.c    1.11 3/2/94
  14.   SCCS VERSION   : 1.11
  15.   LAST CHANGE    : 3/2/94
  16.  
  17.              Copyright (c) 1990-1994  SNNS Group, IPVR, Univ. Stuttgart, FRG
  18.              
  19. ******************************************************************************/
  20.  
  21.  
  22. #include <stdio.h>
  23. #include <ctype.h>
  24. #include <math.h>
  25. #include <string.h>
  26. #include <malloc.h>
  27. #include <X11/Xlib.h>
  28. #include <X11/Xutil.h>
  29. #include <X11/Intrinsic.h>
  30. #include <X11/StringDefs.h>
  31. #include <X11/Shell.h>
  32. #include <X11/Xaw/Box.h>
  33. #include <X11/Xaw/Simple.h>
  34. #include <X11/Xaw/Form.h>
  35. #include <X11/Xaw/Viewport.h>
  36. #include <X11/Xaw/Label.h>
  37. #include <X11/Xaw/Toggle.h>
  38. #include <X11/Xaw/Command.h>
  39. #include <X11/Xaw/Cardinals.h>
  40. #include <X11/Xaw/AsciiText.h>
  41.  
  42. #include "ui.h"
  43. #include "ui_xWidgets.h"
  44.  
  45. #include "d3_global.h"
  46. #include "d3_draw.h"
  47. #include "d3_disp.h"
  48. #include "d3_graph.h"
  49. #include "d3_fonts.h"
  50. #include "d3_move.h"
  51. #include "d3_xUtils.h"
  52. #include "d3_setup.h"
  53. #include "d3_units.h"
  54. #include "d3_links.h"
  55. #include "d3_model.h"
  56. #include "d3_project.h"
  57. #include "d3_light.h"
  58. #include "d3_main.h"
  59. #include "o_graph.h"
  60. #include "d3_zgraph.h"
  61. #include "d3_zValue.h"
  62.  
  63. #include "d3_pannels.ph"
  64.  
  65.  
  66. /*****************************************************************************
  67.   FUNCTION : d3_doneProc 
  68.  
  69.   PURPOSE  : finishes the 3D View and closes all windows
  70.   RETURNS  : void
  71.   NOTES    :
  72.  
  73.   UPDATE   :
  74. ******************************************************************************/
  75.  
  76. static void d3_doneProc (void)
  77.  
  78. {
  79.     if (d3_displayIsReady)
  80.         XtDestroyWidget (d3_displayMainWidget);;
  81.     XtDestroyWidget (d3_controlWidget);;
  82.     d3_displayIsReady = FALSE;
  83.     d3_controlIsReady = FALSE;
  84. }
  85.  
  86.  
  87. /*****************************************************************************
  88.   FUNCTION : d3_toggleFreezeButton
  89.  
  90.   PURPOSE  : toggles the freeze button
  91.   RETURNS  : void
  92.   NOTES    :
  93.  
  94.   UPDATE   :
  95. ******************************************************************************/
  96.  
  97. static void d3_toggleFreezeButton (Widget w, Widget button, caddr_t call_data)
  98.  
  99. {
  100.     d3_freeze ^= 1;
  101.     ui_xSetToggleState (button, d3_freeze);    
  102. }
  103.  
  104.  
  105. /*****************************************************************************
  106.   FUNCTION : d3_createButtonPannel
  107.  
  108.   PURPOSE  : creates the pannel for the setup, model, light... buttons
  109.   RETURNS  : void
  110.   NOTES    :
  111.  
  112.   UPDATE   :
  113. ******************************************************************************/
  114.  
  115. static void d3_createButtonPannel (Widget parent)
  116.  
  117. {
  118.     Widget box, setup, model, project, light, units, links; 
  119.     Widget freeze, display, done, box2, reset;
  120.     int n;
  121.     Arg arg[10];
  122.  
  123.     n = 0;
  124.     XtSetArg(arg[n], XtNwidth, 250);          n++;
  125.     XtSetArg(arg[n], XtNleft  , XtChainLeft); n++;
  126.     XtSetArg(arg[n], XtNright , XtChainLeft); n++;
  127.     XtSetArg(arg[n], XtNtop   , XtChainTop);  n++;
  128.     XtSetArg(arg[n], XtNbottom, XtChainTop);  n++;
  129.     box = XtCreateManagedWidget("box", boxWidgetClass, parent, arg, (unsigned int) n);
  130.  
  131.     setup = d3_xCreateButtonItem ("setup", box, NULL, NULL);
  132.     model = d3_xCreateButtonItem ("model", box, setup, NULL);
  133.     project = d3_xCreateButtonItem ("project", box, model, NULL);
  134.     light = d3_xCreateButtonItem ("light", box, project, NULL);
  135.     units = d3_xCreateButtonItem ("units", box, NULL, setup);
  136.     links = d3_xCreateButtonItem ("links", box, units, model);
  137.     reset = d3_xCreateButtonItem ("reset", box, links, project);
  138.     freeze = d3_xCreateButtonItem ("freeze", box, reset, light);
  139.  
  140.     XtAddCallback (reset, XtNcallback, (XtCallbackProc) d3_resetDisplay, NULL);
  141.     XtAddCallback (project, XtNcallback, (XtCallbackProc) d3_createProjectPannel, (caddr_t) project);
  142.     XtAddCallback (units, XtNcallback, (XtCallbackProc) d3_createUnitPannel, (caddr_t) units);
  143.     XtAddCallback (links, XtNcallback, (XtCallbackProc) d3_createLinkPannel, (caddr_t) links);
  144.     XtAddCallback (setup, XtNcallback, (XtCallbackProc) d3_createSetupPannel, (caddr_t) setup);
  145.     XtAddCallback (model, XtNcallback, (XtCallbackProc) d3_createModelPannel, (caddr_t) model);
  146.     XtAddCallback (light, XtNcallback, (XtCallbackProc) d3_createLightPannel, (caddr_t) light);
  147.  
  148.     XtAddCallback (freeze, XtNcallback, (XtCallbackProc) d3_toggleFreezeButton, (caddr_t) freeze);
  149.  
  150.     n = 0;
  151.     XtSetArg(arg[n], XtNwidth, 50);                       n++;
  152.     XtSetArg(arg[n], XtNleft  , XtChainLeft); n++;
  153.     XtSetArg(arg[n], XtNright , XtChainLeft); n++;
  154.     XtSetArg(arg[n], XtNtop   , XtChainTop); n++;
  155.     XtSetArg(arg[n], XtNbottom, XtChainTop); n++;
  156.     box2 = XtCreateManagedWidget("box2", boxWidgetClass, parent, arg, (unsigned int) n);
  157.  
  158.     display = d3_xCreateButtonItem ("display", box2, NULL, NULL);
  159.     done = d3_xCreateButtonItem ("done2", box2, NULL, display);
  160.  
  161.     XtAddCallback(display, XtNcallback, (XtCallbackProc) d3_createDisplayWindow, NULL);
  162.     XtAddCallback(done, XtNcallback, (XtCallbackProc) d3_doneProc, NULL);
  163.  
  164.     if (d3_state.model_mode == solid)
  165.         d3_initZbuffer ();
  166. }
  167.  
  168.  
  169. /*****************************************************************************
  170.   FUNCTION : d3_createControlPannel
  171.  
  172.   PURPOSE  : creates subpannels of the control pannel
  173.   RETURNS  : void
  174.   NOTES    :
  175.  
  176.   UPDATE   :
  177. ******************************************************************************/
  178.  
  179. static void d3_createControlPannel (Widget parent)
  180.  
  181. {
  182.     d3_createMovePannel (parent);
  183.     d3_createButtonPannel (parent);
  184.     d3_createZvaluePannel (parent);
  185. }
  186.  
  187.  
  188. /*****************************************************************************
  189.   FUNCTION : d3_displayGraphic
  190.  
  191.   PURPOSE  : creates the control pannel
  192.   RETURNS  : void
  193.   NOTES    : !!! this is entry point from the XGUI !!!
  194.             the function is a callback from 
  195.                ui_xCreatePanel in module ui_main.c  
  196.  
  197.   UPDATE   :
  198. ******************************************************************************/
  199.  
  200. void d3_displayGraphic (void)
  201.  
  202. {
  203.  
  204.     Widget       d3_frameWidget;
  205.     Arg          arg[25];
  206.     Cardinal     n;
  207.     char         buf[40];
  208.  
  209.     if (d3_controlIsReady)
  210.         return;
  211.  
  212.     sprintf (buf, "3D-control");
  213.     n = 0;  
  214.     d3_controlWidget = XtCreatePopupShell (buf, topLevelShellWidgetClass, 
  215.                                            ui_toplevel, arg, n); 
  216.  
  217.     n = 0;
  218.     XtSetArg (arg[n], XtNwidth, 300); n++;
  219.     XtSetArg (arg[n], XtNleft  , XtChainLeft); n++;
  220.     XtSetArg (arg[n], XtNright , XtChainRight); n++;
  221.     XtSetArg (arg[n], XtNtop   , XtChainTop); n++;
  222.     XtSetArg (arg[n], XtNbottom, XtChainBottom); n++;
  223.  
  224.     d3_frameWidget = XtCreateManagedWidget ("form", boxWidgetClass, 
  225.                                             d3_controlWidget, arg, n);
  226.     d3_createControlPannel (d3_frameWidget);
  227.  
  228.     ui_checkWindowPosition(d3_controlWidget);
  229.     XtPopup (d3_controlWidget, XtGrabNone);
  230.     ui_xDontResizeWidget(d3_controlWidget); 
  231.  
  232.     d3_controlIsReady = TRUE;
  233. }
  234.  
  235.  
  236.  
  237. /* end of file */
  238. /* lines: 273 */
  239.